from django.shortcuts import render
from django.views import generic
from django.shortcuts import redirect
from django.http import HttpResponse

from content import utils


class ShowingContent(generic.View):

    """ Показываем какое-то содержимое пользователю """

    def get(self, request, content_type):
        cm = utils.ContentManagement()
        template, context = cm.get_right_content('show', 'content_type', content_type)
        return render(request, template, context)

    def post(self, request, content_type):
        cm = utils.ContentManagement()
        result = cm.get_right_content('add', request, content_type)
        return result


class ShowingObjectCategory(generic.View):

    """ Показываем подкатегорию какого-то типа содержимого """

    def get(self, request, content_type, object):
        cm = utils.ContentManagement()
        template, context = cm.get_right_content('show', 'category', content_type, object)
        return render(request, template, context)

    def post(self, request, content_type, object):
        cm = utils.ContentManagement()
        result = cm.get_right_content('add', request, content_type, object)
        return result


class ShowingObjectDetail(generic.View):

    """ Отображение отдельного объекта какого-то содержимого """

    def get(self, request, content_type, object):
        cm = utils.ContentManagement()
        template, context = cm.get_right_content('show', content_type, object)
        return render(request, template, context)


class UpdatingObject(generic.View):

    """ Обновление какого-то объекта """

    def get(self, request, content_type, object):
        request.session['previous_page'] = request.get_full_path()
        cm = utils.ContentManagement()
        template, context = cm.get_right_content('show', 'update', content_type, object)
        return render(request, template, context)

    def post(self, request, content_type, object):
        cm = utils.ContentManagement()
        result = cm.get_right_content('update', content_type, request, object)
        return result


class DeletingObject(generic.View):

    """ Удаляем какой-то объект (слово, видео, фразу) """

    def post(self, request, main_object, content_type, object):
        print(f'slugggggggggggggggggggggggg - {object}')
        cm = utils.ContentManagement()
        result = cm.get_right_content('delete', main_object, request, content_type, object)
        return result


class AddingAdditionalObject(generic.View):

    """ Добавление дополнительного объекта к другому (заметки к видео, например) """

    def get(self, request, content_type, object):
        cm = utils.ContentManagement()
        template, context = cm.get_right_content('show', 'add', 'additionally', content_type, object)
        return render(request, template, context)

    def post(self, request, content_type, object):
        cm = utils.ContentManagement()
        result = cm.get_right_content('add', 'additionally', request, content_type, object)
        return result


class UpdateAdditionalyObject(generic.View):

    """ Обновление дополнительного объекта """

    def get(self, request, type_of_main_object, main_object, content_type, object):
        cm = utils.ContentManagement()
        template, context = cm.get_right_content('show', 'update', 'additionally', type_of_main_object, \
                                                 main_object, content_type, request, object)
        return render(request, template, context)

    def post(self, request, type_of_main_object, main_object, content_type, object):
        cm = utils.ContentManagement()
        result = cm.get_right_content('update', 'additionally', type_of_main_object, \
                                      main_object, content_type, request, object)
        return result


class DeletingAdditionalObject(generic.View):

    """ Удаление дополнительного объекта """

    def get(self, request, pk):
        print('не буду удалять')

    def post(self, request, pk):
        cm = utils.ContentManagement()
        result = cm.get_right_content('delete', 'additionally', pk)
        return result


class AddSomeGroup(generic.View):

    """ Добавляем какую-то новую группу """

    def get(self, request, content_type):
        cm = utils.ContentManagement()
        template, context = cm.get_right_content('show', 'add', 'group', content_type)
        return render(request, template, context)

    def post(self, request, content_type):
        cm = utils.ContentManagement()
        result = cm.get_right_content('add', 'group', request, content_type)
        return result
